Настройка CoDeSys для PRU программирования

В двух словах: нужно загрузить .prg и .exp файлы, и добавить библиотеку pruAccessLib.lib. Этот файл можно взять в архиве pack1.zip на форуме ОВЕН

Подготовка контроллера

Контроллер ПЛК110 М02, купленый в январе 2016-го заработал сразу. Прошивку обновлять не требовалось.

Перед использованием PRU ядер их нужно перевести в режим свободного программирования. Подготовку достаточно выполнить 1 раз, она не потеряется при перезагрузках.

Для этого нужно:

  1. Загрузить файл PRU0.prg в контроллер (и PRU1.prg, если требуется) через CoDeSys меню Online > Write file to PLC

  2. Перезагрузить ПЛК: выключить и включить питание ПЛК

Импорт .exp кода в CoDeSys проект

Hardella IDE генерирует стандартный .exp файл, который загружается в CoDeSys через меню Project > Import...

Импорт программы в CoDeSys

При этом в проект загружаются следующие сущности:

Импортированные программы в CoDeSys

  • Программы настройки PRU ядер (PROGRAM BlinkningLeds_Pru0Init и PROGRAM BlinkningLeds_Pru1Init)
  • Программы обмена данными с PRU ядрами (PROGRAM BlinkningLeds_Pru0MemoryTransfer и PROGRAM BlinkningLeds_Pru1MemoryTransfer)
  • Перечисления (ENUM), если они использовались

Нужно добавить библиотеку pruAccessLib.lib, иначе в CoDeSys возникнут ошибки похожие на

Error 4001: BlinkningLeds_Pru0MemoryTransfer (2): Identifier 'PRU_FB_GET_PARAMETER' not defined

Настройка PRU ядра

По умолчанию, PRU ядра “в режиме свободного программирования” остановлены. Т.е. они вообще ничего не делают. Для того, чтобы загрузить программу, нужно вызвать соответствующую программу.

Для этого в PLC_PRG добавим следующий код:

BlinkningLeds_Pru0Init(); (* загрузка кода в PRU0 *)
BlinkningLeds_Pru1Init(); (* загрузка кода в PRU1 *)
(* PRU запущены, можно обмениваться данными *)
BlinkningLeds_Pru0MemoryTransfer(BLINK_3_4_enable:=TRUE);
BlinkningLeds_Pru1MemoryTransfer(BLINK_1_2_enable:=TRUE);

Код для PLC_PRG

В целом, можно менять PRU программы на ходу, но делать это нужно только тогда, когда оборудование находится в безопасном состоянии. Явно не стоит заменять программу сверления во время самого сверления.

В целом, можно вызывать BlinkningLeds_Pru0Init(); хоть в каждом основном цикле ПЛК. В программе Init есть защита от повторных запусков.

Обновлено:

Комментировать